import type { PageParam, PageResult } from '@vben/request';

import { requestClient } from '#/api/request';

export namespace InfraVectorDbInstanceApi {
  /** 向量数据库实例信息 */
  export interface VectorDbInstance {
    id: number; // 向量库实例id
    name?: string; // 实例名称（如 “生产环境 - Milvus 集群”）
    type?: string; // 数据库类型（milvus/qdrant/pinecone/weaviate 等）
    description: string; // 实例描述（如 “支撑产品知识库检索”）
    connectionConfig: string; // 连接配置
    status?: string; // 实例状态（online/offline/error/maintaining）
    metadata: string; // 其他参数
  }
}

/** 查询向量数据库实例分页 */
export function getVectorDbInstancePage(
  data: PageParam,
  desensitize: boolean,
  encrypt: boolean,
) {
  return requestClient.post<
    PageResult<InfraVectorDbInstanceApi.VectorDbInstance>
  >('/infra/vector-db-instance/page', data, { desensitize, encrypt });
}

/** 查询向量数据库实例详情 */
export function getVectorDbInstance(id: number) {
  return requestClient.get<InfraVectorDbInstanceApi.VectorDbInstance>(
    `/infra/vector-db-instance/get?id=${id}`,
  );
}

/** 新增向量数据库实例 */
export function createVectorDbInstance(
  data: InfraVectorDbInstanceApi.VectorDbInstance,
) {
  return requestClient.post('/infra/vector-db-instance/create', data);
}

/** 修改向量数据库实例 */
export function updateVectorDbInstance(
  data: InfraVectorDbInstanceApi.VectorDbInstance,
) {
  return requestClient.put('/infra/vector-db-instance/update', data);
}

/** 删除向量数据库实例 */
export function deleteVectorDbInstance(id: number) {
  return requestClient.delete(`/infra/vector-db-instance/delete?id=${id}`);
}

/** 批量删除向量数据库实例 */
export function deleteVectorDbInstanceList(ids: number[]) {
  return requestClient.delete(
    `/infra/vector-db-instance/delete-list?ids=${ids.join(',')}`,
  );
}

/** 导出向量数据库实例 */
export function exportVectorDbInstance(params: any) {
  return requestClient.download('/infra/vector-db-instance/export-excel', {
    params,
  });
}
/** 测试连接向量数据库实例 */
export function testConnectVectorDbInstance(id: number) {
  return requestClient.post(`/infra/vector-db-instance/test-connect?id=${id}`);
}
